/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package lista10_1;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

/**
 *
 * @author Gustavo
 */
public class simulaDao {

    private Empresa empresa;
    private Pessoa pessoa;
    private Endereco endereco;
    private Departamento departamento;
    private List<Pessoa> pessoas;
    private List<Departamento> departamentos;

    public List<Pessoa> getPessoas() {
        return pessoas;
    }

    public Empresa getEmpresa() {
        return empresa;
    }

    public List<Departamento> getDepartamentos() {
        return departamentos;
    }

    @SuppressWarnings({"rawtypes", "unchecked"})
    public void salvarDepartamento() {
        departamentos = new ArrayList();
        List<Pessoa> alocarPessoas = null;

        departamento = new Departamento("RH", null);
        departamentos.add(departamento);

        departamento = new Departamento("Comercial", null);
        departamentos.add(departamento);

        for (Departamento d : departamentos) {
            if (d.getArea().equalsIgnoreCase("Comercial")) {
                alocarPessoas = new ArrayList();
                for (Pessoa p : pessoas) {
                    if ((p.getNome().equalsIgnoreCase("bruna"))
                            || (p.getNome().equalsIgnoreCase("zeca"))
                            || (p.getNome().equalsIgnoreCase("pedro"))
                            || (p.getNome().equalsIgnoreCase("paulo"))) {
                        alocarPessoas.add(p);
                    }
                }
                d.setPessoa(alocarPessoas);
            } else {
                alocarPessoas = new ArrayList();
                for (Pessoa p : pessoas) {
                    if ((!p.getNome().equalsIgnoreCase("bruna"))
                            && (!p.getNome().equalsIgnoreCase("zeca"))
                            && (!p.getNome().equalsIgnoreCase("pedro"))
                            && (!p.getNome().equalsIgnoreCase("paulo"))) {
                        alocarPessoas.add(p);
                    }
                }
                d.setPessoa(alocarPessoas);
            }

        }

    }

    @SuppressWarnings({"unchecked", "rawtypes"})
    public void salvarPessoa() {
        pessoas = new ArrayList();
        endereco = new Endereco("Rua das Acacias", 200, "Campinas", "São Jose",
                "SC");
        pessoa = new Pessoa("Ana", 23, "071.584.838-28", "F", endereco);
        pessoas.add(pessoa);

        endereco = new Endereco("Rua das Margaridas", 35, "Ingleses",
                "Florianopolis", "SC");
        pessoa = new Pessoa("Carla", 45, "011.550.836-79", "F", endereco);
        pessoas.add(pessoa);

        endereco = new Endereco("Rua das Rosas", 1150, "Aririu", "Palhoça",
                "SC");
        pessoa = new Pessoa("Cintia", 34, "227.514.858-99", "F", endereco);
        pessoas.add(pessoa);

        endereco = new Endereco("Rua das Esmeraldas", 522, "Pedra Branca",
                "Palhoça", "SC");
        pessoa = new Pessoa("Bruna", 29, "098.764.567-81", "F", endereco);
        pessoas.add(pessoa);

        endereco = new Endereco("Rua das Figueiras", 16, "Estreito",
                "Florianopolis", "SC");
        pessoa = new Pessoa("Zeca", 21, "025.184.924-68", "M", endereco);
        pessoas.add(pessoa);

        endereco = new Endereco("Rua dos Eucaliptos", 1255, "Barreiros",
                "São Jose", "SC");
        pessoa = new Pessoa("Pedro", 33, "001.375.122-90", "M", endereco);
        pessoas.add(pessoa);

        endereco = new Endereco("Rua dos Diamantes", 9, "Centro", "Biglaçu",
                "SC");
        pessoa = new Pessoa("Paulo", 41, "312.774.487-65", "M", endereco);
        pessoas.add(pessoa);

    }

    public void salvarEmpresa() {
        endereco = null;
        endereco = new Endereco("Silva Jardim", 360, "Centro", "Florianopolis",
                "SC");
        empresa = new Empresa("SENAC", "23.456.789/0123-456",
                "WWW.SC.SENAC.BR", departamentos, endereco);

    }

    public void listar() {
        int somaIdadeRH = 0;
        int somaIdadeCOMERCIAL = 0;
        int RHcontM = 0;
        int RHcontF = 0;
        int COMERCIALcontM = 0;
        int COMERCIALcontF = 0;
        int NidadeRH = 100;
        int NidadeCOMERCIAL = 100;
        int VidadeRH = 0;
        int VidadeCOMERCIAL = 0;
        String dep;
        System.out.println("EMPRESA NOME---:" + empresa.getNome());
        System.out.println("EMPRESA CNPJ---:" + empresa.getCnpj());
        System.out.println("EMPRESA SITE---:" + empresa.getSite());
        System.out.println("===EMPRESA ENDERECO===");
        System.out.println("NUMERO---------:"
                + empresa.getEmderecoEmpresa().getNumero());
        System.out.println("RUA------------:"
                + empresa.getEmderecoEmpresa().getRua());
        System.out.println("BAIRRO---------:"
                + empresa.getEmderecoEmpresa().getBairro());
        System.out.println("CIDADE---------:"
                + empresa.getEmderecoEmpresa().getCidade());
        System.out.println("ESTADO---------:"
                + empresa.getEmderecoEmpresa().getEstado());
        System.out.println("========DEPARTAMENTO=========");
        for (Departamento d : empresa.getDepartamentos()) {
            System.out.println("DEPARTAMENTO :" + d.getArea());
            dep = d.getArea();
            System.out.println("======MEMBROS======");
            for (Pessoa p : d.getPessoa()) {
                System.out.println("PESSOA NOME----:" + p.getNome());
                System.out.println("PESSOA CPF-----:" + p.getCpf());
                System.out.println("PESSOA IDADE---:" + p.getIdade() + " anos");
                System.out.println("PESSOA SEXO----:" + p.getSexo());
                System.out.println("===PESSOA ENDERECO====");
                System.out.println("NUMERO---------:"
                        + p.getEnderecoPessoa().getNumero());
                System.out.println("RUA------------:"
                        + p.getEnderecoPessoa().getRua());
                System.out.println("BAIRRO---------:"
                        + p.getEnderecoPessoa().getBairro());
                System.out.println("CIDADE---------:"
                        + p.getEnderecoPessoa().getCidade());
                System.out.println("ESTADO---------:"
                        + p.getEnderecoPessoa().getEstado());

                if (dep.equalsIgnoreCase("RH")) {

                    if (p.getIdade() < NidadeRH) {
                        NidadeRH = p.getIdade();
                    } else {
                        VidadeRH = p.getIdade();
                    }
                    somaIdadeRH = somaIdadeRH + p.getIdade();
                    if (p.getSexo().equalsIgnoreCase("f")) {
                        RHcontF++;
                    } else {
                        RHcontM++;
                    }
                } else {

                    if (p.getIdade() < NidadeCOMERCIAL) {
                        NidadeCOMERCIAL = p.getIdade();
                    } else {
                        VidadeCOMERCIAL = p.getIdade();
                    }
                    if (p.getSexo().equalsIgnoreCase("f")) {
                        COMERCIALcontF++;
                    } else {
                        COMERCIALcontM++;
                    }
                    somaIdadeCOMERCIAL = somaIdadeCOMERCIAL + p.getIdade();
                }
                System.out.println("=======================");
            }
            System.out.println(" ");
        }
        System.out
                .println("Soma de idades do RH--------------------------------:"
                        + somaIdadeRH + " anos");
        System.out
                .println("Soma de idades do COMERCIAL-------------------------:"
                        + somaIdadeCOMERCIAL + " anos");
        System.out
                .println("Total das idades de RH e COMERCIAL------------------:"
                        + (somaIdadeCOMERCIAL + somaIdadeRH) + " anos");
        System.out
                .println("Quantidade de Homens  no RH-------------------------:"
                        + RHcontM);
        System.out
                .println("Quantidade de Mulheres  no RH-----------------------:"
                        + RHcontF);
        System.out
                .println("Quantidade de Homens  no COMERCIAL------------------:"
                        + COMERCIALcontM);
        System.out
                .println("Quantidade de Mulheres  no COMERCIAL----------------:"
                        + COMERCIALcontF);
        System.out
                .println("Quantidade de Homens na empresa---------------------:"
                        + (RHcontM + COMERCIALcontM));
        System.out
                .println("Quantidade de Mulheres na empresa-------------------:"
                        + (COMERCIALcontF + RHcontF));
        System.out
                .println("Idade do Funcionario(a) Mais novo(a) do RH----------:"
                        + NidadeRH);
        System.out
                .println("Idade do Funcionario(a) Mais velho(a) do RH---------:"
                        + VidadeRH);
        System.out
                .println("Idade do Funcionario(a) Mais novo(a) do COMERCIAL---:"
                        + NidadeCOMERCIAL);
        System.out
                .println("Idade do Funcionario(a) Mais velho(a) do COMERCIAL--:"
                        + VidadeCOMERCIAL);
    }

    public void pesquisarFuncionarioPorCidade() {

        String cidade = JOptionPane
                .showInputDialog("Informe a cidade para pesquisar os funcionarios");

        for (Pessoa p : pessoas) {
            if (p.getEnderecoPessoa().getCidade().equalsIgnoreCase(cidade)) {
                System.out.println("PESSOA NOME----:" + p.getNome());
                System.out.println("PESSOA CPF-----:" + p.getCpf());
                System.out.println("PESSOA IDADE---:" + p.getIdade() + " anos");
                System.out.println("PESSOA SEXO----:" + p.getSexo());
                System.out.println("===PESSOA ENDERECO====");
                System.out.println("NUMERO---------:"
                        + p.getEnderecoPessoa().getNumero());
                System.out.println("RUA------------:"
                        + p.getEnderecoPessoa().getRua());
                System.out.println("BAIRRO---------:"
                        + p.getEnderecoPessoa().getBairro());
                System.out.println("CIDADE---------:"
                        + p.getEnderecoPessoa().getCidade());
                System.out.println("ESTADO---------:"
                        + p.getEnderecoPessoa().getEstado());
                System.out.println(" ");
                System.out.println("--------------------------------------");
                System.out.println(" ");
            }
        }
    }

    public static void main(String[] args) {
        simulaDao s = new simulaDao();
        s.salvarPessoa();
        s.salvarDepartamento();
        s.salvarEmpresa();
        int opcao = Integer
                .parseInt(JOptionPane
                        .showInputDialog("Digite \n[1]Litar \n[2]Pesquiser funcionario por cidade"));
        if (opcao == 1) {
            s.listar();
        } else {
            s.pesquisarFuncionarioPorCidade();
        }

    }
}
